b6b4687974cae60d02fdbaf63f3a2ac72f9dd5b9,imhotep-server/src/main/java/com/indeed/imhotep/local/ImhotepLocalSession.java,ImhotepLocalSession,regexRegroup,#String#String#number#number#number#,1149
Before Change
docIdStream.close();
iter.close();
remapNegativeDocs(docRemapped, targetGroup, negativeGroup);
finalizeRegroup();
}
After Change
final FastBitSetPooler bitSetPooler = new ImhotepBitSetPooler(memory);
final FastBitSet bitSet;
try {
bitSet = bitSetPooler.create(numDocs);
} catch (FlamdexOutOfMemoryException e) {
throw new ImhotepOutOfMemoryException(e);
}
try {
try (
final StringTermIterator iter = flamdexReader.getStringTermIterator(field);
final DocIdStream docIdStream = flamdexReader.getDocIdStream()
) {
final Automaton automaton = new RegExp(regex).toAutomaton();
while (iter.next()) {
final String term = iter.term();
if (automaton.run(term)) {
docIdStream.reset(iter);
remapPositiveDocs(docIdStream, bitSet, targetGroup, positiveGroup);
}
}
}
remapNegativeDocs(bitSet, targetGroup, negativeGroup);
} finally {
bitSetPooler.release(bitSet.memoryUsage());
}